在Web.Config文件中加入<sessionState mode="InProc"></sessionState>语句,但 是在关闭IE页面时好像并未触发Session_End事件。我实验了一个用于记录来访人数 的小网页程序,使用了Application["visitor_counter"]变量。首先修改Web.config 文件,将上面的<session...>语句加入其<Configuration><system.web>下。然后在 Session_Start事件中使用如下语句: Application.Lock(); Application["visitor_counter"]=(int)Application["visitor_counter"]+1; Application.UnLock(); 在Session_End事件中使用如下语句: Application.Lock(); Application["visitor_counter"]=(int)Application["visitor_counter"]-1; Application.UnLock(); 最后在default.asp中加入了一个Label元素,将Application["visitor_counter"]信 息以字符串格式输出。 结果是每打开一次网页,Application["visitor_counter"]值就增1,但是关闭网页 并未是其减少1。请问这是怎么回事,如何解决。
回答:
除非程序通知服务器删除一个session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个 session id就消失了,再次连接服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的session id发送给服务器,则再次打开浏览器仍然能够找到原来的session。 怎么解决呢? 由于关闭浏览器不会导致session被删除,所以服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。 大概是你关闭及统计需要一定的时间反应,刷新几下是不是减1了? 要是还没有,那你通知我,让我想想是怎么回事
石家庄网站建设的优点:我们是专属定制,制作符合您公司业务、风格的网站,这就做到给您制作的网站是网络上独一无二的网站,这样更有利于搜索引擎的收录。如果您喜欢网络上某个风格的网站或者网站模板,我们是只仿制而不直接套用,我们会对其中的结构和样式做增减优化,做…
竞价排名营销是一种通过 竞价购买搜索引擎中关键词或关键短语的广告方式。竞价排名营销分为两种类型。 第一种,直接为真正的搜索引擎结果的排名付费,也就是说付的钱越多,网页所获得的排名名也就越高。 第二种则更类似于普通的广告。这种竞价排名营销方式通过…
网站优化对网站来说是非常重要的,直接决定和影响着网站所起到的作用,以及在各个地方当中的排名。在进行seo优化的过程中,我们必须要坚持一定的原则,真正的把这些事情做得更好,才可以确保最终的结果,这对于我们来说是非常重要的事。 SEO优化主要分为8小步: …